/**
 * 开发团队 : 未来科技
 * 开发人员 : ww
 * 开发时间 : 2020/5/16 4:24 PM
 * 文件名称 : tool.js
 * 开发工具 : WebStorm
 * 功能描述 : 工具类函数
 */
const { resolve } = require('path')
const { writeFile, readFile } = require('fs')
const { parseString } = require('xml2js')


module.exports = {
    getUserDataAsync(req) {
        return new Promise((resolve, reject) => {
            let xmlData = ''
            req
                .on('data', data => {
                    // 当流式数据传递过来，会触发当前事件，会将数据注入到回掉函数中
                    xmlData += data
                })
                .on('end', () => {// close
                    // 当数据接收完毕，会触发当前
                    resolve(xmlData)
                })
        })

    },
    parseXmlAsync(xmlData) {
        return new Promise((resolve, reject) => {
            parseString(xmlData, {trim: true}, (err, data) => {
                if (!err) {
                    resolve(data)
                } else {
                    reject('parseXmlAsync解析失败: ' + err)
                }
            })
        })
    },
    formatMessage(jsData) {
        let message = {}
        jsData = jsData.xml
        // 判断数据是否是一个对象
        if (typeof jsData === 'object') {
            // 遍历对象
            for (let key in jsData) {

                // 获取属性值
                let value = jsData[key]
                // 过滤掉空的数据
                if (Array.isArray(value) && value.length > 0) {
                    message[key] = value[0]
                }
            }
        }
        return message
    },
    writeFileAsync(data, fileName) {
        // 将 data 转化成json字符串
        data = JSON.stringify(data)

        const filePath = resolve(__dirname, fileName)
        // 将access_token 保存位一个文件
        return new Promise((resolve, reject) => {
            writeFile(filePath, data, err => {
                if (!err) {
                    console.log('文件保存成功')
                    resolve()
                } else {
                    reject('writeFileAsync: ' + err)
                }
            });//end writeFile
        });//end Promise
    },
    readFileAsync(fileName) {
        const filePath = resolve(__dirname, fileName)
        // 读取本地文件中的数据
        return new Promise((resolve, reject) => {
            readFile(filePath, (err, data) => {
                if (!err) {
                    console.log('文件读取成功')
                    // 将json字符串转换成json对象
                    data = JSON.parse(data)
                    resolve(data)
                } else {
                    reject('readFileAsync: ' + err)
                }
            });//end writeFile
        });//end Promise
    }

}